// Promise 是异步编程的一种解决方案，他可以解决回调地狱的问题
// 使用.then进行下一次的继续调用
// 前一个then里面返回的Promise对象，并且调用resolve的时候传递了数据，数据会被下一个then接收到
// 前一个then里面如果没有调用resolve，则后续的then不会接收到任何值
const fs = require('fs')

new Promise((resolve, reject) => {
  fs.readFile('js/ES6/promise测试/a.txt', 'utf-8', (err, data) => {
    if (err) {
      reject(err)
    } else {
      resolve(data)
    }
  })
})
  .then(a => {
    console.log(a)
    return new Promise((resolve, reject) => {
      // 在第一个promise的then中调用第二个
      fs.readFile('js/ES6/promise测试/b.txt', 'utf-8', (err, data) => {
        if (err) {
          reject(err)
        } else {
          resolve(data)
        }
      })
    })
  })
  .then(b => {
    console.log(b)
    return new Promise((resolve, reject) => {
      fs.readFile('js/ES6/promise测试/c.txt', 'utf-8', (err, data) => {
        if (err) {
          reject(err)
        } else {
          resolve(data)
        }
      })
    })
  })
  .then(c => {
    console.log(c)
  })
  .catch(err => {
    console.log(err)
  })
